#ifndef _BASE_H_
#define _BASE_H_

#include <string>
#include <vector>

// 某个时刻某个客户的带宽需求
struct demand {
    std::string cid;
    int bw;
    demand() {}
    demand(std::string cid, int bw) : cid(cid), bw(bw) {}
};

// 某个时刻所有的带宽需求
struct demands {
    std::string timestamp;
    std::vector<demand> demand_list;
    demands() {}
    demands(std::string timestamp, std::vector<demand> demand_list) : timestamp(timestamp), demand_list(demand_list) {}
};

// 某个边缘节点的带宽分配
struct s_alloc {
    std::string sid;
    int alloc;
    s_alloc() {}
    s_alloc(std::string sid, int alloc) : sid(sid), alloc(alloc) {}
};

// 某个时刻某个客户的带宽分配
struct c_alloc {
    std::string cid;
    std::vector<s_alloc> s_alloc_list;
    c_alloc() {}
    c_alloc(std::string cid, std::vector<s_alloc> s_alloc_list) : cid(cid), s_alloc_list(s_alloc_list) {}
};

// 某个时刻的带宽分配
struct allocs {
    std::string timestamp;
    std::vector<c_alloc> c_alloc_list;
    allocs() {}
    allocs(std::string timestamp, std::vector<c_alloc> c_alloc_list) : timestamp(timestamp), c_alloc_list(c_alloc_list) {}
};

// 分配过程中
struct c_info {
    std::string cid;
    int bw;
    int avg;
    int rem;
    int avi_num;
    std::vector<int> aviliable;
    c_info() {}
};

// 字符串分割函数
std::vector<std::string> split(std::string str,std::string pattern);

#endif